package com.situ.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.situ.model.CnRegionInfo;

import java.util.List;

/**
 * 地区信息 Service 接口
 */
public interface CnRegionInfoService extends IService<CnRegionInfo> {

    /**
     * 根据父级ID查询子地区列表
     */
    List<CnRegionInfo> getByParentId(Integer parentId);

    /**
     * 根据上级代码查询地区列表
     */
    List<CnRegionInfo> getBySuperiorCode(String superiorCode);

    /**
     * 根据地区级别查询列表
     */
    List<CnRegionInfo> getByLevel(Integer level);

    /**
     * 根据代码获取地区完整信息（包括父级）
     */
    String getFullInfoByCode(String code);

    /**
     * 获取所有省份列表
     */
    List<CnRegionInfo> getAllProvinces();

    /**
     * 根据省份代码获取下属城市
     */
    List<CnRegionInfo> getCitiesByProvince(String provinceCode);

    /**
     * 根据城市代码获取下属区县
     */
    List<CnRegionInfo> getDistrictsByCity(String cityCode);

    /**
     * 根据地区名称模糊查询
     */
    List<CnRegionInfo> searchByName(String name);

    /**
     * 只返回直接子节点
     */
    List<CnRegionInfo> getRegionTree(Integer parentId);

    /**
     * 根据代码获取地区完整的多级嵌套树形结构
     */
    CnRegionInfo getFullAddressTreeByCode(String code);
}